package siac.com.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;

import siac.com.configuracao.ConexaoEclipselink;
import siac.com.entity.FacAtendimento;


public class FacAtendimentoDao {
	private EntityManagerFactory factory;
	private EntityManager manager;
	private FacAtendimento atendimento;
	private List<FacAtendimento> listaFacAtendimento;

	public FacAtendimentoDao() {
		factory = ConexaoEclipselink.getEntityManagerFactory();
	}

	private EntityManager getEntityManager() {
		return factory.createEntityManager();
	}

	public FacAtendimento getFacAtendimento() {
		if (this.atendimento == null) {
			this.atendimento = new FacAtendimento();
		}
		return atendimento;
	}

	public void setFacAtendimento(FacAtendimento atendimento) {
		this.atendimento = atendimento;
	}

	public List<FacAtendimento> getListaFacAtendimento() {
		return listaFacAtendimento;
	}

	public void setListaFacAtendimento(List<FacAtendimento> listaFacAtendimento) {
		this.listaFacAtendimento = listaFacAtendimento;
	}

	public List<FacAtendimento> findAll() {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery("FacAtendimento.findAll");
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public FacAtendimento findId(Object id) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager
					.createNamedQuery("FacAtendimento.findById").setParameter(
							"idTabela", id);
			this.atendimento = (FacAtendimento) query.getSingleResult();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.atendimento;
	}

	public List<FacAtendimento> findCode(Object code) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"FacAtendimento.findByCode").setParameter("code", code);
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public List<FacAtendimento> findByDataAtendimento(Object dataAtendimento) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"FacAtendimento.findByDataAtendimento").setParameter("dataAtendimento", dataAtendimento);
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public List<FacAtendimento> findByPaciente(Object paciente) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"FacAtendimento.findByPaciente").setParameter("paciente", paciente);
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public List<FacAtendimento> findStatus(Object status) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"FacAtendimento.findByStatus").setParameter("status", status);
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public List<FacAtendimento> findByTipoAtendimento(Object tipoAtendimento) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"FacAtendimento.findByTipoAtendimento").setParameter("tipoAtendimento", tipoAtendimento);
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public List<FacAtendimento> findByUnidadeNegocio(Object unidadeNegocio) {
		try {
			manager = getEntityManager();
			Query query = (Query) manager.createNamedQuery(
					"FacAtendimento.findByUnidadeNegocio").setParameter("unidadeNegocio", unidadeNegocio);
			this.setListaFacAtendimento(query.getResultList());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return this.listaFacAtendimento;
	}

	public String save(FacAtendimento bean) {
		try {
			manager = getEntityManager();
			manager.getTransaction().begin();
			manager.persist(bean);
			manager.getTransaction().commit();
			return "sucesso";
		} catch (Exception ex) {
			// ex.printStackTrace();
			// /messageUtility.addMensage(ex.getMessage(), "N");
			return "erro";
		}
	}

	public String delete(FacAtendimento bean) {
		try {
			this.setFacAtendimento(bean);
			manager = getEntityManager();
			manager.getTransaction().begin();
			FacAtendimento ob = manager.find(FacAtendimento.class, getFacAtendimento()
					.getId());
			manager.remove(ob);
			manager.getTransaction().commit();
			return "sucesso";
		} catch (Exception ex) {
			// ex.printStackTrace();
			// /messageUtility.addMensage(ex.getMessage(), "N");
			return "erro";
		}
	}

	public String update(FacAtendimento bean) {
		try {
			manager = getEntityManager();
			manager.getTransaction().begin();
			manager.merge(bean);
			manager.getTransaction().commit();
			return "sucesso";
		} catch (Exception ex) {
			// ex.printStackTrace();
			// /messageUtility.addMensage(ex.getMessage(), "N");
			return "erro";
		}
	}
}
